home *** CD-ROM | disk | FTP | other *** search
/ PCNET 2006 September - Disc 3 / PCNET_CD_2006_09_3.iso / apps / Install_Babya_Logic.exe / {app} / Help / raw.txt < prev    next >
Encoding:
Text File  |  1999-07-25  |  42.3 KB  |  1,453 lines

  1. Here's the visual music info...
  2.  
  3. Start Here
  4.  
  5. What's Visual Music all about?
  6. Visual Music lets you play around 128 instruments on your PC including bass
  7. guitar, pads, bagpiper and even whistle! You can even record what you are
  8. playing, edit it and save it in a file. If you don't know how to play
  9. synthesiser keyboard, it provides you a easy to use scripting language to
  10. create music just by telling what key in which instrument you want to play
  11. for how much time! 
  12.  
  13. What is Note, Octave and bla bla bla?
  14. If you have looked at piano's keyboard, you would have noticed the strange
  15. pattern of black and white keys that repeats itself. More closely, well, you
  16. would have seen that there is total 12 black and white keys in each pattern.
  17. Each of this 12 key produces it's own sound called a mucical Note. This 12
  18. notes are named as a,a#,b,c,c#,d,d#,e,e#,f,g,g#. The note with "#" is called
  19. minor note while one without "#" is called major note. And each set of these
  20. 12 keys that makes a pattern is called Octave. So if a piono has 84 keys it
  21. would have 84/12=7 octaves (because each octave has 12 notes). The first
  22. octave will start as left side of piono and last one will end at right side
  23. of piono. Lower octave gives notes of low frequency while higher octave
  24. gives notes of higher frequency. But each octave has exactly same pattern of
  25. notes.
  26.  
  27. So, when you want to make some musical sound, you should...
  28. 1. Tell which note you want to play.
  29. 2. Tell in which octave the note is.
  30.  
  31. Thus a note and a octave will uniquely identifies the key you should press
  32. in the piono.
  33.  
  34. There is also something called Pan. The Pan is nothing but a value that
  35. determines whether every key in the piono has equal volume or whether left
  36. side key has higher volume. 
  37.  
  38.  
  39. Learn to use Visual Music in 5 min!
  40. This is the extra fast tour of Visual Music to quickly let you know most out
  41. of Visual Music!!
  42.  
  43. Doing Basics:
  44. 1. Click on any key in the piono and see what's happens.
  45. 2. Press these keys in sequence: Q W E R T Y. Do you here anything?
  46. 3. Click on any instrument you like and repeat step 1 & 2.
  47. 4. Press the Octave button "2" and press piono keys again. Hear any
  48. difference?
  49.  
  50. How To Do Recording?
  51. 1. At the lower right side there's a button with the symbol of colorful CD.
  52. It's button to start recording. And just above that there's button to stop
  53. recording.
  54. 2. Press the Record button and then click on the piono keys. You will see
  55. something getting written each time when you press the piono keys. You can
  56. edit it if you like. To stop recording press that Stop button(or click on
  57. Tune > Stop Play/Record menu).
  58. 3. Now to replay what you have recorded, press the Play button (just above
  59. the Stop button) or click the menu Tune > Play Selected Tune.
  60. 4. To save your recording Press on the Save button on top toolbar or click
  61. File > Save menu.
  62.  
  63. How to write script?
  64. See the next section!
  65.  
  66.  
  67. MScript programming super quick guide:
  68.  
  69. If you know slightest programming, this few steps will teach you MScript by
  70. example in minutes.
  71.  
  72. For writing MScript press <> at any time or click on the "Script For The
  73. Tune" box.
  74. To run the MScript just press F5.
  75.  
  76. Try out each of the following scripts and see what you hear and then read
  77. the explanation here!
  78.  
  79. 1. Write the following script and run it.
  80. a b c
  81.    Explanation: Each musical note is a command. Thus this MScript plays 3
  82. musical notes a,b and c. Musical notes available are
  83. a,a#,b,c,c#,d,d#,e,e#,f,g,g#
  84.  
  85. 2. Write the following script and run it.
  86. INSTRUMENT:Sitar
  87. a b c
  88.    Explanation: The keyword INSTRUMENT sets the instrument you want to play.
  89. Note that instrument could be specified by number or name and there is no
  90. space around ":".
  91.  
  92. 3. Write the following script and run it.
  93. LABEL:Top
  94. a b c
  95. JUMP:Top
  96.    Explanation: The LABEL command marks a position in the script. The JUMP
  97. command tells where to jump in the script. So the notes a b c will be played
  98. repetitively.
  99.  
  100. 4. Write the following script and run it.
  101. LABEL:Top
  102. a b c:7,5
  103. JUMP:Top
  104.    Explanation: This one is similar to above except that the Note c has
  105. additional parameters. The first parameter spacifies for how much time Note
  106. c should be played. The second parameter specifies for how much time to
  107. pause before going to next command, i.e., after playing a note how much time
  108. to keep silence. You also use SILENCE command for this. For example above is
  109. same as this one:
  110.  
  111. LABEL:Top
  112. a b c:7 SILENCE:5
  113. JUMP:Top
  114.  
  115. So the question could be, what's the default value if you don't explicitly
  116. specifie how long to play the note. Refer this section for that!
  117.  
  118. 5. Write the following script and run it.
  119. SET:Count,3
  120. LABEL:TOP
  121.   a b c
  122.   MATH:Count,--
  123.   IF:Count,>,0,TOP,BELOW
  124.        LABLE:BELOW
  125.           d e f
  126.   JUMP:TOP
  127.  
  128.    Explanation: The SET command sets the value in the variable. MATH command
  129. does some mathematical operation on the variable (here "--" means decrement
  130. by 1). Lastly the IF command checks if variable is set to perticular value
  131. and jumps to specified location acordingly.
  132.  
  133. 6. Write the following script in Tune1.
  134. SET:Count,3
  135. LABEL:TOP
  136.   a b c
  137.   MATH:Count,--
  138.   IF:Count,>,0,TOP,BELOW
  139.        LABLE:BELOW
  140.           d e f
  141.   JUMP:TOP
  142.  
  143. Write the following script in Tune2.
  144. SET:Count,3
  145. LABEL:TOP
  146.   a b c
  147.   MATH:Count,--
  148.   IF:Count,>,0,TOP,BELOW
  149.        LABLE:BELOW
  150.           d e f
  151.   JUMP:TOP
  152.  
  153.  
  154. Press Play All Tunes button. You will hear multiple instruments
  155. being played simultaneously. You can also play tunes individually. 
  156.  
  157. 7. Managing tunes.
  158. You can rename the existing tune, add new tune or delete the one.
  159.  
  160.  
  161. MScript syntex overview:
  162.  
  163. Every MScript command has this format:
  164.  
  165.  
  166. CommandName:Param1,Param2,...
  167.  
  168. |<--one word without space-->|
  169.  
  170.  
  171. Note that 
  172. 1. MScript command do not have space anywhere in the enitre command, not
  173. even in a parameter.
  174. .. MScript is not case sensitive.
  175. .. MScript commands could be seperated by space, tab or new line. For
  176. example
  177. LABEL:Top
  178. a b c
  179. JUMP:Top
  180.  
  181. is equivalent to
  182.  
  183. LABEL:Top a b c JUMP:Top
  184. 2. There could be variable numbers of parameters for a command.
  185. 3. If there is no parameters for the command you can just write CommandName.
  186. 4. You can write variable name also instead of command name. for example...
  187.  
  188. SET:InstruNum,39 'Set variable
  189.  
  190. 'Play instrument according to the value in variable.
  191. INSTRUMENT:InstruNum
  192. a b c
  193.  
  194. Example2:
  195.  
  196. 'This script plays same notes for different intruments
  197.  
  198. SET:InstruNum,127 'Initialise variable
  199.  
  200. LABLE:PlayNote 'This is the start of the loop
  201.  
  202. INSTRUMENT:InstruNum 'Set instrument and play notes
  203. c d e f
  204.  
  205. MATH:InstruNum,-- 'Next instrument to play and back to the
  206. loop
  207. IF:InstruNum,>=,0,PlayNote
  208.  
  209. .. Many MScript commands supports enhanced syntex. For example to set Octave
  210. you can do...
  211. O:3
  212.  
  213. But say you want to increment octave value from whatever it's current value,
  214. you can do...
  215. O:++
  216. To decrement current octave value,
  217. O:--
  218.  
  219. However say you want to increase octave temporarily only for playing note.
  220. The conventional way for this is..
  221. O:++ 'Increment octave
  222. a 'Play the Note a
  223. O:-- 'Decrement octave
  224.  
  225. But you can do this in one line using extended syntex
  226.  
  227. a:,,++
  228.  
  229. Explanation:
  230. Every Note command (i.e. a,a#,b,c,c#... etc) has many optional
  231. parameters. The 1st parameters tells for how long to play the note. Second
  232. parameter says for how long to keep silence after playing note, 3rd
  233. parameter says in which octave the note should be played.
  234. There are many other parameters too. Refere <>
  235.  
  236.  
  237. 5. The most major feature of the MScript is that you can run many scripts
  238. simultaneoulsy. Each MScript is refered to as Tune also. You can start/stop
  239. another MScript from current one or run all of them simultaneously.
  240. Typically each MScript will play one different instrument. There is no
  241. limits of how many MScript tunes you could write but at any point of time
  242. only 16 MScripts could be active (a MScript is said to be active when it's
  243. running and is not playing long silence). Thus you can always have 16 tunes
  244. running simultaneously. By clever use of start/stop and RELEASE command you
  245. can play upto 64 instruments at once!
  246.  
  247.  
  248. MScript coding standard:
  249. 1. Each MScript command except names of the note should be in capital.
  250. 2. MScript variables should be mixed case and starts with capital letter.
  251. 3. Lables are also mixed case and starts with capital letter.
  252. 4. Try to avoid writing intrument number instead of instrument name. For
  253. example INSTRUMENT:Sitar is more preferable then INSTRUMENT:49.
  254. 5. MScript supports 3 styles of comments:
  255. 'The VB style comment supported
  256. --SQL Server style comment supported
  257. file://C++ style comment supported
  258.  
  259.    Try to use VB style comments as standard.
  260. 6. MScript supports short names for almost all commands. For example instead
  261. of writing INSTRUMENT:Sitar you can write I:Sitar. This short names are
  262. supported to do trial and error quickly and should not be used in released
  263. version of your script.
  264.  
  265. FAQ
  266. 1. Is this program freeware?
  267. 2. In which language it was written? Can I have source code?
  268. 3. To whome do I contact I get error or doesn't know how to use it?
  269. 4. Who wrote this program?
  270. 5. How much hours have been spent in writing this program?
  271. 6. Can I take part in development?
  272. 7. Why a new language MScript is invented?
  273. 8. Where are the automation objects for Visual Music?
  274. 9. 
  275.  
  276. Keyboard shortcuts
  277. Play notes: All keys in the row from "Q" to "]"
  278. Play tune: F5
  279. Stop Play/recording: Ctrl + T
  280.  
  281. Features and functionality:
  282. Behind the tiny looking screens of Visual Music there are tons of code and
  283. features. Here's few sample...
  284. 1. Visual Music implements full transparent MIDI channel pooling. The sound
  285. card can allow only 16 channels simultaneously. However by smart suffeling,
  286. Visual Music allows you to create much more tunes and play them
  287. simultaneously.
  288. 2. Complete COM based object oriented architecture. Visual Music is just the
  289. front end to the ActiveX server objects that actually does the work. You too
  290. can build your own frontend using these ActiveX objects with very little
  291. code or control the Visual Music from VBScript or VBA.
  292. 3. DDE support: Visual Music also supports many basic commands through DDE.
  293. You can control existing Visual Music frontend by writing your own DDE
  294. client.
  295. 4. Drag-n-drop of instruments in to the script.
  296. 5. MIDI device crash recovery. If by chance Visual Music crahses, it still
  297. will recover and unlock MIDI device when it runs next time.
  298. 6. You can load .MSC file in to Visual Music by clicking it in the explorer.
  299. 7. Visual Music contains buil in compiler and virtual machine for MScript.
  300. 8. You can run lots of MScripts (tunes) simultaneouly. Currently it's done
  301. by virtual multithreading.
  302. 9. It supports on-the-fly compilation.
  303. 10. Versatile MIDI Engine. MIDI engine is the heart of the Visual Music
  304. which actually supports aliased handles, on-fly-channel allocation, channel
  305. pooling and more!
  306. 11. Supports icon/file extension from command line switch.
  307. 12. Visual feedback while playing recorded tune.
  308. 13. Smart versionig, embedded timer information and signature protected
  309. MScript file format.
  310. 14. Active flat-look buttons. 3D icons.
  311. 15. Copy/Past of entire MScripts.
  312. 16. Additional info on instruments.
  313. 17. Advanced search on instruments.
  314. 18. Favorite support for instruments.
  315. 19. Sample playing while selecting instruments.
  316. 20. 20 MScript instructions to control MIDI device.
  317. 21. Future support for add-ins and extendibility.
  318. 22. Much of the features of backend ActiveX servers is not yet implemented
  319. in fronend.
  320.  
  321. Future enhancement:
  322. 1. Very oddly, Visual Music will not fit in to 640 X 480. You will need 800
  323. X 600 atleast.
  324. 2. No objects curretly exposed outside of EXE to prevent versioning problems
  325. for the time being.
  326. 3. Wave file mixing
  327. 4. Save to MIDI/Wav
  328. 5. Muli key press in recording support.
  329. 6. Full DDE server and addition command GET_MIDI_HANDLE.
  330. 7. Tune Sequence Editor
  331. 8. Full drag and drop support
  332. 9. Play from browser support. Browser plug-in for <MSCRIPT> tag.
  333. 10. True multi threading for instruction processor.
  334. 11. Script debugging, immediate & watch window, break point instructions
  335. 12. User Interface MSCript Commands - MsgBox, InputBox, PRINT, WaitForKey,
  336. OnKeyGo
  337. 13. Low level commands to directli control MIDIEng
  338. 14. MIDI input device support.
  339.  
  340. Using Visual Music
  341.  
  342. Using Keyboard: It's easy. Click on any key with mouse. Or press the Q,W,E,R
  343. etc keys on your keyboard!
  344. Using InstrumentSelector: Just click on anything to select. Click on <> to
  345. add the instruments to your favorite list. 
  346. Using MScript Editor:
  347. Using other controls:
  348. File operations:
  349. Tips:
  350.  
  351. MScript Reference:
  352. What is MScript?
  353. MScript is the specially created language to create music! You might ask
  354. that already so many languages exist so why a new one. Well, I too tried to
  355. implement music scripting with existing language but soon realised that I
  356. want more. By making this decision I was at disadvantage howvever because I
  357. would not only have to create compiler and virtual machines but also
  358. debuging environment and detailed documentation. But I thought there wasn't
  359. a easy way out once I imagined how a language should look like. Rest of the
  360. things I made easy by making language extreemly simple to parse and
  361. implement (almost no lex analysis needed). But that's also makes
  362. non-programmers to learn this language very easy because there isn't much
  363. syntex rules, variables, types, etc. But it still allows you to create good
  364. music! One of the most important reason I choose upon new language was that
  365. Visual Music required to run many scripts simultaneoulsy. Even it should be
  366. easy to run/stop script from another script. Almost all traditional
  367. languages supports functions that runs sequencially, i.e. you can't run many
  368. different functions simultaneoulsy, share variables and also allow to
  369. control each other unless you do some complex multithreading. Unfortunetly
  370. this isn't a easy task even for experienced programmers, not to talk of
  371. musicians. And hence MScript comes in to picture!!
  372.  
  373. MScript features
  374.  
  375. 1. Very simple structure with least numbers of syntex rules.
  376. 2. Anybody can write or extend compiler in almost no time!
  377. .. Every MScript command is extensible by adding more optional parameters.
  378. .. Suports 3 styles of comments.
  379. .. Supports short version for most of the command to quickly do trial and
  380. error.
  381. 3. Gives you all elementry commands which are easy to grasp and still enough
  382. for full control!
  383. 4. It's interpreted language.
  384. 5. Simultaneous run/ control others, share variables.
  385. 6. Free flaw - limit by space, tab or new line.
  386. 7. On-fly-compilation - no binaries are produced! This is possible due to
  387. very easy structure and there's almost no time required in parsing.
  388.  
  389.  
  390. Timing in MScript (for musical instruction):
  391. The time interval specified how long a note will be played. MScript commands
  392. allows you to play any notes for the time interval as specified by you.
  393. However for simplicity, time interval is not specified in the units of milli
  394. seconds or seconds but in terms of a special unit called MScript Time
  395. Interval. Each MScript time interval is 60ms long. So if you say "Play the
  396. note c# for interval = 5" it means "Play the note c# for 300ms". The default
  397. time interval for a note is 4 (i.e. 240ms). So, the command c# will play the
  398. note "c#" for 240ms by default. But the command c#:6 will play the note note
  399. "c#" for 6*60=360ms.
  400. You can change this default time interval by NOTE_INTERVAL command. For
  401. example,
  402. C# 'Play the note C# for interval=4 (default)
  403. NOTE_INTERVAL:7 'Change the standard note interval
  404. C# 'Play the note C# for interval=7 (new
  405. default)
  406. C#:10 'Play the note C# for interval=10 (override
  407. the default)
  408.  
  409.  
  410. Timing in MScript (for non-musical instruction):
  411. The none musical instructions (i.e. instructions that does not play any
  412. musical notes or silence) like JUMP, MATH, IF etc essentially do not take
  413. any time to execute. This means that non-musical instruction doesn't
  414. introduces any significant delay. For example,
  415. To execute following 4 instructions 4 clock cycles would be required because
  416. each note is played for 1 clock cycle if no interval is specified:
  417. a b c d
  418.  
  419. To execute following 1 instruction, again 4 clock cycles would be required
  420. because note is specified to run for 4 cycles:
  421. a:4
  422.  
  423. However to execute following 4 instructions it will still require only 4
  424. cycles because non-musical instructions are executed one after another
  425. irrespective of clock cycle:
  426. a:4
  427. IF:Var1,<>,5,SomeWhere 'Non musical instruction
  428. SET:Var1,5 'Non musical instruction
  429. MATH:Var1,++ 'Non musical instruction
  430.  
  431.  
  432. Simple MScript commands
  433. 1. How to play notes
  434. 2. How to specified Note interval
  435. 2. How to repeat commands (looping)
  436. 3. How to set variables
  437. 4. How to check variable values
  438. 5. How to set instrumet, volume, octave
  439. 6. How to start/stop other tune
  440.  
  441. Complete command listing
  442.  
  443. Note paramets inside <> is compulsary while that inside [] are optional.
  444.  
  445. 1. Command Name: Note_Name:[Note Interval],[Silence
  446. interval],[octave],[volume]
  447. where Note_Name is any of this: a, a#, b, c, c#, d ,d#, e,
  448. e#, f, g#
  449.  
  450. What it does: Playes the specified note.
  451.  
  452. Short Form: There isn't any short form for this command.
  453.  
  454. Parameters: Note Interval: How long the note should be
  455. played. If note specified standard note interval is used (default is 4).
  456. Silence Interval: How long to keep silence
  457. after playing the note. If note specified standard silence interval is used
  458. (default is 4).
  459. Octave: In which octave to play the note.
  460. Also supports ++ etc operators. If note specified currently set octave is
  461. used.
  462. Volume: Volume with which the note should be
  463. played. Also supports ++ etc operators. If note specified currently set
  464. volume is used.
  465.  
  466. Value constraints: Note Interval: If 0, Note is played for
  467. shortest interval limited only by CPU speed
  468. Silence Interval: If 0, no silence is
  469. inserted, i.e., if second note is there it will be played immediately.
  470. Octave: 0 - 7. 
  471. Volume: 0-100. No error check in range. 
  472.  
  473. Remarks: 
  474.  
  475. Examples: Click here to know how to run examples.
  476. 1. 'Play notes
  477. a b c c# d a
  478.  
  479. 2. 'Play the note a# for the interval =
  480. 5 (each interval is of 60ms)
  481. a#:5
  482.  
  483. 3. 'Play the note c for the interval =
  484. 5 followed by silence for interval of 2 followed by note c# with default
  485. interval
  486. c:5,2 c#
  487.  
  488. 4. 'Play the note c# in the
  489. octave=default octave + 3 with volume=50 interval = 5 followed by silence
  490. for interval of 2 
  491. c#:5,2,++3,50
  492.  
  493. See Also: NOTE, NON, NOFF
  494.  
  495.  
  496. 2. Command Name: Note:<Note Number>,[Note Interval],[Silence interval],[octave],[volume]
  497.  
  498. What it does: Playes the note specified by the given
  499. number. This basically corresponds to the key number of the piono. A full
  500. piono could have 88 keys (0 at the left and 87 at right). You can specifie
  501. which key you want to press.
  502.  
  503. Short Form: N
  504.  
  505. Parameters: Note Number: Direct number of note you want
  506. to play. If note specified last note will be played.
  507. Note Interval: How long the note should be
  508. played. If note specified standard note interval is used (default is 4).
  509. Silence Interval: How long to keep silence
  510. after playing the note. If note specified standard silence interval is used
  511. (default is 4).
  512. Octave: In which octave to play the note.
  513. Also supports ++ etc operators. If note specified currently set octave is
  514. used.
  515. Volume: Volume with which the note should be
  516. played. Also supports ++ etc operators. If note specified currently set
  517. volume is used.
  518.  
  519. Value constraints: Note Number: 0-87, no error for the invalid
  520. value. 
  521. Note Interval: If 0, Note is played for
  522. shortest interval limited only by CPU speed
  523. Silence Interval: If 0, no silence is
  524. inserted, i.e., if second note is there it will be played immediately.
  525. Octave: 0 - 7. 
  526. Volume: 0-100. 
  527.  
  528. Remarks: This command is equivalent to commands like
  529. a, a#, b. c# etc which playes the note specified by its name instead of
  530. number. There is no performance issue between two versions. In general
  531. playing a note by it's name is much more readable then it's number. Howvever
  532. this command is useful when you want to write the script to play the note
  533. whose number is stored in a variable.
  534.  
  535. Examples: Click here to know how to run examples.
  536. 1. 'Play notes
  537. NOTE:46 
  538. NOTE:48,2,3
  539. NOTE:50
  540.  
  541. 2. 'Play the note specified by variable
  542. SET:NoteNum,50
  543. NOTE:NoteNum
  544.  
  545. 3. 'Play notes in a loop
  546. SET:NoteNum,50
  547. LABLE:NextNote
  548. NOTE:NoteNum,7
  549. MATH:NoteNum,--
  550. IF:NoteNum,>,88,ExitLoop,NextNote
  551. LABEL:ExitLoop
  552. EXIT
  553.  
  554. See Also: NON, NOFF, a, a#, b, c, c#,...
  555.  
  556.  
  557. 3. Command Name: NOTE_ON:<Note name or
  558. number>,[octave],[volume]
  559.  
  560. What it does: Starts playing the specified note but
  561. doesn't stops playing that note until you call NOFF or STOP. This command is
  562. similar to a, a#, c c# etc commands to play note except that the interval
  563. for how long note will be played is up to you. You can use this command to
  564. simultaneously play many notes withing the single tune but it's time taking
  565. to calculate and stop the notes. See the examples. 
  566.  
  567. Short Form: NON
  568.  
  569. Parameters: Note name or number: Note name (i.e.
  570. a,a#,c,c# etc) or direct number of note you want to start. 
  571. Octave: In which octave to play the note.
  572. Also supports ++ etc operators. If note specified currently set octave is
  573. used.
  574. Volume: Volume with which the note should be
  575. played. Also supports ++ etc operators. If note specified currently set
  576. volume is used.
  577.  
  578. Value constraints: Note Number: 0-87 or
  579. a,a#,b,c,c#,d,d#,e,e#,f,g,g#
  580. Octave: 0 - 7 
  581. Volume: 0-100 
  582.  
  583. Remarks: This command is equivalent to commands like
  584. a, a#, b. c# etc which playes the note specified by its name instead of
  585. number. There is no performance issue between two versions. In general
  586. playing a note by it's name is much more readable then it's number. Howvever
  587. this command is useful when you want to write the script to play the note
  588. whose number is stored in a variable. Octave argument is optional but is
  589. desirable to improve readability. If change the octave before stoping note
  590. you must supply octave while turning the note off.
  591.  
  592. Examples: 1. 'Play note for interval = 10
  593. NOTE_ON:a# 
  594. WAIT_FOR:10
  595. NOTE_OFF:a#
  596.  
  597. 2. 'Play the notes a# in octave 3 and
  598. c# in octave 4 simultaneously. Insert some delays so that both could be
  599. distingushed.
  600. NOTE_ON:a#,3 'Start a#
  601. WAIT_FOR:3
  602. NOTE_ON:c#,4 'Start c#
  603. WAIT_FOR:50
  604. NOTE_OFF:a#,3 'Stop a#
  605. WAIT_FOR:10
  606. NOTE_OFF:c#,4 'Stop c#
  607.  
  608. See Also: NOTE, NOFF, a, a#, b, c, c#,...
  609.  
  610.  
  611. 4. Command Name: LABEL:<Label name>
  612.  
  613. What it does: Labels the location in code where you can
  614. jump later.
  615.  
  616. Short Form: L
  617.  
  618. Parameters: Label name: Name of label you want to give
  619.  
  620. Value constraints: Label name: Can not contain space. You can't
  621. have two labels with same name.
  622.  
  623. Remarks: This instruction use used to give a name to
  624. the location where you can jump later using JUMP instruction or IF
  625. instruction.
  626.  
  627. Examples: 1. 'Play the note c# again and again
  628.  
  629. LABEL:DoItAgain
  630. c#
  631. JUMP:DoItAgain
  632.  
  633. 2. 'Play the notes c# 5 times
  634.  
  635. SET:Count,5
  636. LABEL:TheLoop
  637. c#
  638. MATH:Count,--
  639. IF:Count,>,0,TheLoop
  640.  
  641.  
  642. See Also: JUMP, IF
  643.  
  644.  
  645. 5. Command Name: JUMP:<Label name>
  646.  
  647. What it does: Jumps to the immediate next location where
  648. the specified label is there.
  649.  
  650. Short Form: J
  651.  
  652. Parameters: Label name: Name of label where you want to
  653. jump
  654.  
  655. Value constraints: Label name: Can not contain space. Label
  656. must exist or you will get run time error.
  657.  
  658. Remarks: Use JUMP instruction to repeat perticular
  659. commands again and again.
  660.  
  661. Examples: 1. 'Play the note c# again and again
  662.  
  663. LABEL:DoItAgain
  664. c#
  665. JUMP:DoItAgain
  666.  
  667. See Also: LABEl, IF
  668.  
  669.  
  670. 6. Command Name: IF:<Variable>,<Condition>,<Value>,<label to
  671. jump on if condition is True>,[label to jump on if condition is False]
  672.  
  673. What it does: Checks the value of specified variable to
  674. see if the condition is satiesfied and accordingly jumps to specified lable.
  675.  
  676. Short Form: No short form for this instruction.
  677.  
  678. Parameters: Variable: Name of the variable whoes value
  679. you want to set.
  680. Condition: Conditions specified by,
  681. > : Greater then
  682. < : Less then
  683.  
  684. <= : Less then or equal to
  685. >= : Greater then or equal to
  686. == : Equal to
  687. <> : Not equal to 
  688. Value: Value to be compared with the value
  689. of the variable
  690. Label to jump on if condition is True: If
  691. condition evaluates to true the jump is made to this label
  692. Label to jump on if condition is False: If
  693. condition evaluates to false the jump is made to this label. Note that this
  694. is optional argument.
  695.  
  696. Value constraints: Variable: Must already been set to some
  697. value using SET instruction.
  698. Label to jump on if condition is True: Label
  699. must be declared using LABEL i instruction.
  700. Label to jump on if condition is False:
  701. Label must be declared using LABEL i instruction.
  702.  
  703. Remarks: This is the basic IF structure that you can
  704. use to make decision of where to divert the program flow.
  705.  
  706. Examples: 1. 'Play the notes c# 5 times
  707.  
  708. SET:Count,5
  709. LABEL:TheLoop
  710. c#
  711. MATH:Count,--
  712. IF:Count,>,0,TheLoop
  713.  
  714. See Also: LABEL, SET, JUMP
  715.  
  716.  
  717. 7. Command Name: INSTRUMENT:<Instrument name or number>
  718.  
  719. What it does: Set the instrument in which the notes would
  720. be played.
  721.  
  722. Short Form: I
  723.  
  724. Parameters: Instrument name or number: Name or number of
  725. the instrument. 
  726.  
  727. Value constraints: Instrument name must not have spaces. If you
  728. want to spacifie instrument like "Music Box" specifie it as "Music_Box". As
  729. usual, you can also specifie the variable name whose value may contain
  730. intrument number. But variable can not contain instrument name. 
  731.  
  732. Remarks: Prefer to specify the instrument to play by
  733. it's name. You can drag and drop instrument from Instrument Selector in the
  734. Visual Music.
  735.  
  736. Examples: 1. 
  737. INSTRUMENT:Music_Box
  738. a b c
  739.  
  740. 2. 
  741. INSTRUMENT:118
  742. a b c
  743.  
  744. 3. 
  745.  
  746. SET:Count,28
  747. LABEL:TheLoop
  748. INSTRUMENT:Count
  749. c# a a b a#
  750. MATH:Count,++
  751. IF:Count,<,128,TheLoop
  752.  
  753. See Also: NOTE, OCTAVE, VOLUME, SET, a, a#, b, c,
  754. c#,...
  755.  
  756.  
  757. 8. Command Name: VOLUME:<Volume number>
  758.  
  759. What it does: Sets the amount of loudness with which next
  760. notes would be played
  761.  
  762. Short Form: V
  763.  
  764. Parameters: Volume number: Amount of loudness
  765.  
  766. Value constraints: Volume number: 0-100. Heigher values could
  767. be specified but not recommanded.
  768.  
  769. Remarks: Default value is 100 (i.e. full). You can
  770. specifie values as high as 256 but it produces some unpredictable effects.
  771.  
  772. Examples: 1. 
  773. VOLUME:100
  774. a b c
  775.  
  776. VOLUME:50
  777. a b c
  778.  
  779. 2. 
  780.  
  781. SET:Count,100
  782. LABEL:TheLoop
  783. VOLUME:Count
  784. c# a a
  785. MATH:Count,--
  786. IF:Count,>,0,TheLoop
  787.  
  788. See Also: OCTAVE, VOLUME, SET, a, a#, b, c, c#,...
  789.  
  790.  
  791. 9. Command Name: OCTAVE:<Octave number>
  792.  
  793. What it does: Sets the octave with which next notes would
  794. be played
  795.  
  796. Short Form: O
  797.  
  798. Parameters: Octave number
  799.  
  800. Value constraints: Volume number: 0-7. Heigher values could be
  801. specified but not recommanded.
  802.  
  803. Remarks: This value is used only if you do not
  804. specifie the octave as the part of the instruction. Default value is 4. You
  805. can specifie values as high as 256 but it produces some unpredictable
  806. effects.
  807.  
  808. Examples: 1. 
  809. OCTAVE:2
  810. a b c
  811.  
  812. OCTAVE:6
  813. a b c
  814.  
  815. 2. 
  816.  
  817. SET:Count,7
  818. LABEL:TheLoop
  819. OCTAVE:Count
  820. c# a a
  821. MATH:Count,--
  822. IF:Count,>,0,TheLoop
  823.  
  824. See Also: PAN, VOLUME, SET, a, a#, b, c, c#,...
  825.  
  826.  
  827. 10. Command Name: PAN:<Pan value>
  828.  
  829. What it does: Sets the pan value. It is the value that
  830. determines whether to play lower notes with more volume or not.
  831.  
  832. Short Form: No short form for this instruction.
  833.  
  834. Parameters: Pan value
  835.  
  836. Value constraints: Pan value: 0-100. 
  837.  
  838. Remarks: Default value is 64 which means all notes
  839. are played at equal volume.
  840.  
  841. Examples: 1. 
  842. PAN:22
  843. O:2 a#
  844. O:6 a#
  845.  
  846. PAN:100
  847. O:2 a#
  848. O:6 a#
  849.  
  850. 2. 
  851.  
  852. SET:Count,87
  853. PAN:20
  854. LABEL:TheLoop
  855. NOTE:Count
  856. MATH:Count,--
  857. IF:Count,>,0,TheLoop
  858.  
  859. See Also: OCTAVE, VOLUME, SET, a, a#, b, c, c#,...
  860.  
  861.  
  862. 11. Command Name: NOTE_INTERVAL:<interval value>
  863.  
  864. What it does: Specifies the value of the note interval
  865. with which note will be played if no value is supplied as the part of note
  866. instruction.
  867.  
  868. Short Form: NI
  869.  
  870. Parameters: interval value: One interval is by default
  871. equals to 60ms
  872.  
  873. Value constraints: interval value: If 0, note will be played
  874. for shortest amount of time, only limited by CPU speed.
  875.  
  876. Remarks: Default value is 4. The value specified by
  877. NOTE_INTERVAL command is used only if no such value is supplied as the part
  878. of instruction to play the note.
  879.  
  880. Examples: 1. 
  881. c# 'Play note for default
  882. interval=4
  883.  
  884. NOTE_INTERVAL:8 
  885. c# 'Play note for new default
  886. interval=8
  887.  
  888. c#:3 'Play note for interval=3
  889.  
  890. See Also: SILENCE_INTERVAL, NOTE, a, a#, b, c, c#,...
  891.  
  892.  
  893. 12. Command Name: SILENCE_INTERVAL:<interval value>
  894.  
  895. What it does: Specifies the value of the interval for
  896. which silence is maintained after playing the note.
  897.  
  898. Short Form: SI
  899.  
  900. Parameters: interval value: One interval is by default
  901. equals to 60ms
  902.  
  903. Value constraints: interval value: If 0, next instruction is
  904. executed immediatly.
  905.  
  906. Remarks: Default value is 4. Silence could be also
  907. inserted by SILENCE command. The value specified by SILENCE_INTERVAL command
  908. is used only if no such value is supplied as the part of instruction to play
  909. the note.
  910.  
  911. Examples: 1. 
  912. c#  a# 'Play the note followed by
  913. silence for default interval=4
  914.  
  915. SILENCE_INTERVAL:8 
  916. c#  a# 'Play the note followed by
  917. silence for new default interval=8
  918.  
  919. c#:,3 a# 'Play the note
  920. followed by silence for interval=3
  921.  
  922. See Also: NOTE_INTERVAL, SILENCE, WAIT_FOR, NOTE, a,
  923. a#, b, c, c#,...
  924.  
  925.  
  926. 12. Command Name: WAIT_FOR:<interval value>
  927.  
  928. What it does: Does nothing until specified interval is
  929. passed out.
  930.  
  931. Short Form: WF
  932.  
  933. Parameters: interval value: One interval is by default
  934. equals to 60ms
  935.  
  936. Value constraints: interval value: If 0, no wait is doen and
  937. next instruction is executed immediatly.
  938.  
  939. Remarks: Default value is 4. This command is exacly
  940. same as SILENCE command. 
  941.  
  942. Examples: 1. 
  943. c# 
  944. WAIT_FOR:10 
  945. a# 
  946.  
  947. 2. 'Exactly same thing
  948.  
  949. c# 
  950. SILENCE:10
  951. a# 
  952.  
  953. 3. 'Exactly same thing
  954.  
  955. c#:,10 
  956. a# 
  957.  
  958. See Also: NOTE_INTERVAL, SILENCE_INTERVAL, SILENCE,
  959. NOTE, a, a#, b, c, c#,...
  960.  
  961.  
  962. 13. Command Name: SILENCE:<interval value>
  963.  
  964. What it does: Does nothing until specified interval is
  965. passed out.
  966.  
  967. Short Form: S
  968.  
  969. Parameters: interval value: One interval is by default
  970. equals to 60ms
  971.  
  972. Value constraints: interval value: If 0, no wait is doen and
  973. next instruction is executed immediatly.
  974.  
  975. Remarks: Default value is 4. This command is exacly
  976. same as WAIT_FOR command. 
  977.  
  978. Examples: 1. 
  979. a# 
  980. SILENCE:10
  981. a# 
  982.  
  983. 2. 'Exactly same thing
  984.  
  985. a# 
  986. WAIT_FOR:10 
  987. a# 
  988.  
  989. 3. 'Exactly same thing
  990.  
  991. c#:,10 
  992. a# 
  993.  
  994. See Also: NOTE_INTERVAL, SILENCE_INTERVAL, WAIT_FOR,
  995. NOTE, a, a#, b, c, c#,...
  996.  
  997.  
  998. 14. Command Name: TEMPO:<Slow down factor>
  999.  
  1000. What it does: Slows down the execution by the factor of
  1001. the specified value. It's kind of slow motion in video.
  1002.  
  1003. Short Form: No short form for this instruction.
  1004.  
  1005. Parameters: Slow down factor: The factor with which
  1006. system clock would be slowed down.
  1007.  
  1008. Value constraints: Can not be less then 1. Upper value depends
  1009. on internal timer value, typically  500000.
  1010.  
  1011. Remarks: Default value is 1. This command slows down
  1012. the whole script. Useful to inspect what's happening when notes are played
  1013. very fast.
  1014.  
  1015. Examples: 1. 
  1016. a a# b c# 'Normal speed
  1017.  
  1018. TEMPO:3
  1019.  
  1020. a a# b c# 'Now in 3 times
  1021. lower speed
  1022.  
  1023. See Also: NOTE_INTERVAL, SILENCE_INTERVAL, WAIT_FOR,
  1024. NOTE, a, a#, b, c, c#,...
  1025.  
  1026.  
  1027. 15. Command Name: SET:<Variable Name>,[Variable Value]
  1028.  
  1029. What it does: It creates the variable if not already there
  1030. and sets it to specified value.
  1031.  
  1032. Short Form: There isn't any short form for this
  1033. instruction. But you can also use DIM or VAR keyword instead of SET.
  1034.  
  1035. Parameters: Variable Name: Name of the variable to
  1036. create and or set value.
  1037. Variable Value: Value with which variable is
  1038. to be set. You can also specified ++,-- etc operators.
  1039.  
  1040. Value constraints: None of the parameters can have spaces in
  1041. them.
  1042.  
  1043. Remarks: A variable is entity which may contain some
  1044. value that you can read anytime or if you want you can set it's value to
  1045. something else. SET statement creates a variable if it didn't existed. Note
  1046. that you must use SET first if you want to use variable.
  1047.  
  1048. Examples: 1. 
  1049. SET:NoteVal,52
  1050. NOTE:NoteVal
  1051.  
  1052. SET:NoteVal,++ 'Increment
  1053. by one
  1054. NOTE:NoteVal 'Play this
  1055. note
  1056.  
  1057. 2.
  1058. SET:Count,28
  1059. LABEL:TheLoop
  1060. INSTRUMENT:Count
  1061. c# a a b a#
  1062. MATH:Count,++
  1063. IF:Count,<,128,TheLoop
  1064.  
  1065.  
  1066. See Also: IF, JUMP
  1067.  
  1068.  
  1069. 16. Command Name: MATH:<Variable Name>,<Operation>,[Parameters
  1070. for operation]
  1071.  
  1072. What it does: Does the mathematical operation on the
  1073. variable value
  1074.  
  1075. Short Form: M
  1076.  
  1077. Parameters: Variable Name: Name of the variable to which
  1078. value will be used in operation
  1079. Operation: Mathematical operation
  1080. ++: Increment variable's value
  1081. --: Decrement variable's value
  1082. +=: Add the value specified in 3rd
  1083. parameter to the variable
  1084. -=: Subtract the value specified in
  1085. 3rd parameter to the variable
  1086. *=: Multiply the value specified in
  1087. 3rd parameter to the variable
  1088. /=: Devide the variable's value by
  1089. the value specified in 3rd parameter
  1090. ^=: Raise the variable's value by
  1091. the value specified in 3rd parameter
  1092. Parameters for operation: Additional
  1093. parameter that is required for some of the above operations
  1094. Value constraints: No overflow, parameter existance is checked
  1095. currently.
  1096.  
  1097. Remarks: This instruction is very basic one which
  1098. allows you to some arithmatic with variables value. It doesn't support
  1099. expressions like (2*3/4) etc.
  1100.  
  1101. Examples: 1.
  1102. SET:Count,28
  1103. LABEL:TheLoop
  1104. INSTRUMENT:Count
  1105. c# a a b a#
  1106. MATH:Count,++
  1107. IF:Count,<,128,TheLoop
  1108.  
  1109.  
  1110. See Also: SET, IF, JUMP
  1111.  
  1112.  
  1113. 17. Command Name: RANDOM:<Variable name>,[Upper Limit]
  1114.  
  1115. What it does: Set the specified variable with the random
  1116. integer. 
  1117.  
  1118. Short Form: No short form of this instruction is
  1119. available.
  1120.  
  1121. Parameters: Variable Name: Name of the variable in which
  1122. random number will be stored.
  1123. Upper Limit: Upper limit of the generated
  1124. number (including this number). Default is 100.
  1125.  
  1126. Value constraints: Variable Name can not contain spaces.
  1127.  
  1128. Remarks: This instruction is useful you want to play
  1129. random tunes or set random octave etc.
  1130.  
  1131. Examples: 1.
  1132. SET:NoteNum
  1133. LABEL:TheLoop
  1134. RANDON:NoteNum,88
  1135. NOTE:NoteNum,3,0
  1136. IF:Count,<,88,TheLoop
  1137.  
  1138. See Also: SET, IF, JUMP
  1139.  
  1140.  
  1141. 18. Command Name: PLAY:<Tune Name>,[Jump Label in Tune]
  1142.  
  1143. What it does: Starts playing another tune simultaneously.
  1144.  
  1145. Short Form: P
  1146.  
  1147. Parameters: Tune Name: Tune that needs to be started
  1148. simultaneously.
  1149. Jump Label: From where inside the specified
  1150. tune execution should start. If no labels specified then execution starts at
  1151. 1st instruction.
  1152.  
  1153. Value constraints: Specified tune name and label must exist.
  1154.  
  1155. Remarks: This is very significant instruction which
  1156. allows you to run another tune simulatneouly from any other tune.
  1157.  
  1158. Examples: 1. Write in Tune1 following:
  1159. NOTE_INTERVAL:5
  1160. a b a a# b 
  1161. PLAY:Tune2
  1162. a a# c c# d a a a# c d d#
  1163.  
  1164. 1. Write in Tune2 following:
  1165. INSTRUMENT:Sitar
  1166. a b a a# b a a# c c# d a a a# c d d#
  1167.  
  1168. See Also: STOP, PAUSE, EXIT
  1169.  
  1170.  
  1171. 19. Command Name: STOP:[Tune Name]
  1172.  
  1173. What it does: Stops playing another tune or itself.
  1174.  
  1175. Short Form: No short form available for this
  1176. instruction.
  1177.  
  1178. Parameters: Tune Name: Tune that needs to be stopped
  1179. running. If no Tune Name specified then currently running tune is stoped
  1180. (which is same as EXIT)
  1181.  
  1182. Value constraints: Specified tune name must exist.
  1183.  
  1184. Remarks: This instruction allows you stop other
  1185. running tunes or itself.
  1186.  
  1187. Examples: 1. Write in Tune1 following:
  1188. NOTE_INTERVAL:5
  1189. a b a a# b 
  1190. PLAY:Tune2
  1191. a a# c 
  1192. STOP:Tune2 'Tune2 execution
  1193. terminated
  1194. c# d a a a# 
  1195. STOP 'Execution is stoped
  1196. here
  1197. c d d# 
  1198.  
  1199. 1. Write in Tune2 following:
  1200. NOTE_INTERVAL:5
  1201. INSTRUMENT:Sitar
  1202. a b a a# b a a# c c# d a a a# c d d#
  1203.  
  1204. See Also: PLAY, PAUSE, EXIT
  1205.  
  1206.  
  1207. 20. Command Name: PAUSE:[Tune Name]
  1208.  
  1209. What it does: Pauses another running tune or itself.
  1210.  
  1211. Short Form: No short form available for this
  1212. instruction.
  1213.  
  1214. Parameters: Tune Name: Tune that needs to be paused. If
  1215. no Tune Name specified then currently running tune is paused.
  1216.  
  1217. Value constraints: Specified tune name must exist.
  1218.  
  1219. Remarks: This instruction allows you pause other
  1220. running tunes or itself. You can continue running other tunes by issuing
  1221. PLAY instruction. But if a tune pauses itself it can not restart itself!
  1222.  
  1223. Examples: 1. Write in Tune1 following:
  1224. NOTE_INTERVAL:5
  1225. a b a a# b 
  1226. PLAY:Tune2
  1227. a a# c 
  1228. PAUSE:Tune2 'Tune2 execution
  1229. paused
  1230. c# d a a a# 
  1231. PLAY:Tune2 'Tune2 execution
  1232. resumed
  1233. c d d# 
  1234.  
  1235. 1. Write in Tune2 following:
  1236. NOTE_INTERVAL:5
  1237. INSTRUMENT:Sitar
  1238. a b a a# b a a# c c# d a a a# c d d#
  1239.  
  1240. See Also: PLAY, STOP, EXIT
  1241.  
  1242.  
  1243. 20. Command Name: RELEASE
  1244.  
  1245. What it does: Releases MIDI channel. The MIDI Engine takes
  1246. care of releasing channels so you would almost never will require to use
  1247. this instruction.
  1248.  
  1249. Short Form: No short form available for this
  1250. instruction.
  1251.  
  1252. Parameters: No parameters required.
  1253.  
  1254. Value constraints: NA.
  1255.  
  1256. Remarks: The MIDI device has only 16 channels in
  1257. which you can play music. If you are try to run more then 16 tunes
  1258. simultaneously you will get "Out of channels" error (you can create more
  1259. then 16 tunes but only 16 of them should be actively running at any time).
  1260. The RELEASE instruction allows you to release the MIDI channel if you are
  1261. not using it and hence there by use can run more tunes simultaneously. MIDI
  1262. Engine encorporates smart channel pooling and auto matic channel release
  1263. during long silence periods so you should be almost never bother about using
  1264. this instruction. Also note that there is no instruction for aquiring
  1265. channels. Channel allocation is done completely automatic depending on which
  1266. channel is free.
  1267.  
  1268. Examples: 1. Write in Tune1 following:
  1269. 'Say you are not playing any note
  1270. here
  1271. 'but only doing some arithmatic etc
  1272. 'so release the channel so that
  1273. others may use it.
  1274. RELEASE
  1275. ---long processing---
  1276. a a# 'When you play notes next
  1277. time, channel is automatically allocated
  1278.  
  1279. See Also: 
  1280.  
  1281.  
  1282. 21. Command Name: EXIT
  1283.  
  1284. What it does: Stops the execution of the current script
  1285.  
  1286. Short Form: No short form available for this
  1287. instruction.
  1288.  
  1289. Parameters: No parameters required.
  1290.  
  1291. Value constraints: NA.
  1292.  
  1293. Remarks: This instruction is same as STOP without any
  1294. parameters.
  1295.  
  1296. Examples: 1.
  1297. a b c
  1298. a# b c#
  1299. EXIT
  1300. 'This won't get played
  1301. e f e#
  1302.  
  1303. See Also: STOP, PAUSE, RELEASE, PLAY
  1304.  
  1305.  
  1306. 22. Command Name: NOP
  1307.  
  1308. What it does: No-OPeration. Does nothing!
  1309.  
  1310. Short Form: No short form available for this
  1311. instruction.
  1312.  
  1313. Parameters: No parameters required.
  1314.  
  1315. Value constraints: NA.
  1316.  
  1317. Remarks: This instruction odes not do anything.
  1318. InstructionProcessor simply ignores this instruction (i.e. does nothing) and
  1319. executes next one. This instruction can be used as place holder. 
  1320.  
  1321. Examples: 1.
  1322. a b c
  1323. a# b c#
  1324. NOP 'Juts pace filler. In future you can
  1325. replace NOP with something else.
  1326. e f e#
  1327.  
  1328. See Also: STOP, PAUSE, RELEASE, PLAY
  1329.  
  1330.  
  1331.  
  1332.  
  1333. Samples
  1334.  
  1335. File format
  1336. The scripts written for all tunes are stored in single .MSC file (MSC for
  1337. MScript). It's text file and you can edit it with any text editor. 
  1338. Following is the sample .MSC file when opened in Notepad.
  1339.  
  1340. ----
  1341.  
  1342.  
  1343. Following is the general lay out of file. The fields inside <> are
  1344. compulsary.
  1345.  
  1346. MScript:[Param1],[Param2] VER:<CompatibleVer1>,[CompatibleVer2],...
  1347. TIMER:<Timer_Val>
  1348.  
  1349.  
  1350. START_TUNE:<TuneName1>,[Param1],[Param2]
  1351.  
  1352. --MScript commands
  1353.  
  1354. END_TUNE:<TuneName1>
  1355.  
  1356.  
  1357.  
  1358. START_TUNE:<TuneName2>,[Param1],[Param2]
  1359.  
  1360. --MScript commands
  1361.  
  1362. END_TUNE:<TuneName2>
  1363.  
  1364. ------------
  1365. --More tunes
  1366. ------------
  1367.  
  1368.  
  1369. The first filed, i.e. MScript:[Param1],[Param2] is the signature. Currently
  1370. no parameters are used so it's just MScript. This signature helps to
  1371. identifie whether user is trying to open valid MScript file or something
  1372. else that might have been renamed to .MSC or whether file was currupted.
  1373.  
  1374. The 2nd field, i.e. VER:... indicates to which versions the MScript in the
  1375. file is compatible to. For example, if there is new version of MScript in
  1376. future (say 2.0) which is also partially backward compatible to 1.0 and that
  1377. scripts in file .MSC does not uses any 2.0 only features then VER field
  1378. could be,
  1379. VER:2.0,1.0
  1380.  
  1381. Now say their is entirely different flavor of MScript with it's own version
  1382. numbers, then it can mark MSC file with:
  1383. VER:NewKind1.0
  1384.  
  1385. When you open such MSC file in Visual Music it will show you message that
  1386. scipt in the MSC file is not compatible with what it understands. However
  1387. now say NewKind type of MScript is also compatible with MScript used by
  1388. Visual Music, it can mark version as...
  1389. VER:NewKind1.0,VMusic1.0
  1390.  
  1391. Or as..
  1392.  
  1393. VER:NewKind1.0,1.0
  1394.  
  1395. In short, if Visual Music finds 1.0 or VMusic1.0 in the compatible version
  1396. list, it will open it happily or otherwise it will give out an error.
  1397.  
  1398.  
  1399. Next, the TIMER:<Timer_Val> is used to specifie the interval used. For
  1400. example when you say a#:2 it means play the note a# for 2 intervals. Each
  1401. interval is by default 60ms. So the TIMER field looks like this,
  1402. TIMER:60
  1403.  
  1404. If in future true multithreading is employed then it would be possible to
  1405. decrease this timer value and play a note for even more short period.
  1406.  
  1407. Next, script for each tune is enclosed between two markers START_TUNE and
  1408. END_TUNE. START_TUNE can also take parameters but none is used currently.
  1409.  
  1410.  
  1411. Developers reference
  1412.  
  1413. Extending Visual Music
  1414.  
  1415. There are various ways to extend/use Visual Music:
  1416. 1. Visual Music is architectured around varios ActiveX objects. Infact,
  1417. almost all the functionality of Visual Music is in these objects and Visual
  1418. Music itself is merely as "front-end" to provide access to these objects.
  1419. You can build your own front-ends for these objects or may be replace the
  1420. components with you
  1421.  
  1422. Visual Music Object Model
  1423. MIDI Programming guide
  1424. Visual Music DDE commands
  1425. Visual Music command line refernce
  1426.  
  1427.  
  1428. TODO:
  1429. 1. Add fb midi eng.
  1430. 2. Add Random command.
  1431. 3. Alias silnence as WAIT_FOR
  1432. 4. Reset tempo value on exec.
  1433. 5. Alias SET with DIM and VAR. Make var value optional
  1434.  
  1435. Write code
  1436. Impl VM todo
  1437. rename files
  1438. start with each file & finish
  1439. create sample and about
  1440.  
  1441. Regards,
  1442. Shital.
  1443.  
  1444. ________________________________________________________________________________
  1445. Marlborough Stirling plc, Allen Jones House, Jessop Avenue, Cheltenham, Gloucestershire, GL50 3SH
  1446. Tel: 01242 547000     Fax: 01242 547100    http://www.marlborough-stirling.com
  1447.  
  1448. MARLBOROUGH STIRLING
  1449. The only company created specifically to provide a complete range of technology based business solutions to the financial services industry
  1450.  
  1451. CONFIDENTIALITY NOTICE
  1452. This communication and the information it contains is intended for the person or organisation to whom it is addressed. Its contents are confidential and may be protected in law. Unauthorised use, copying or disclosure of any of it may be unlawful. If you are not the intended recipient, please contact us immediately.
  1453.